var rowIdUpdate = null;
$(function(e){
	dataInit();
});

function dataInit(){
	eventInit();
	
	//获取一级菜单表单信息
	$('#messageTable').bootstrapTable({
        url: path+'9c05169202a447c8befa10cea4d6b176', method: 'post', striped: true, cache: false, pagination: true,
        contentType: "application/x-www-form-urlencoded", sidePagination: "server", pageSize: 10, uniqueId: "id", detailView: true,
        queryParams: function (params) {
        	return { limit: params.limit, offset: params.offset};
        },//传递参数（*）
        columns:[{field: 'Number', title: '序号', align: 'center', width: '50', formatter: function (value, row, index) {
        			return index+1;
        		}}, 
        		{field: 'menuName', title: '菜单名称', align: 'center', width: '200', formatter: function (value, row, index) {
	            	return '<a style="word-wrap:break-word;">'+value+'</a>';
	            }},
	            {field: 'menuType', title: '类型', align: 'center', width: '200', formatter: function (value, row, index) {
	            	return '<a style="word-wrap:break-word;">'+value+'</a>';
	            }},
	            {field: 'menuTpl', title: 'TPL', align: 'center', width: '200', formatter: function (value, row, index) {
	            	return '<a style="word-wrap:break-word;">'+value+'</a>';
	            }},
	            {field: 'menuJs', title: 'JS', align: 'center', width: '200', formatter: function (value, row, index) {
	            	return '<a style="word-wrap:break-word;">'+value+'</a>';
	            }},
	            {field: 'menuIcon', title: 'ICON', align: 'center', width: '200', formatter: function (value, row, index) {
	            	return '<a style="word-wrap:break-word;">'+value+'</a>';
	            }},
	            {field: 'menuStyle', title: 'STYLE', align: 'center', width: '200', formatter: function (value, row, index) {
	            	return '<a style="word-wrap:break-word;">'+value+'</a>';
	            }},
	            {field: 'menuSort', title: '菜单序号', align: 'center', width: '200', formatter: function (value, row, index) {
	            	return '<a style="word-wrap:break-word;">'+value+'</a>';
	            }},
	            {field: 'operate', title: '操作', align: 'center', width: '210', events: {
	                'click .RoleOfA': function (e, value, row, index) {
	                	editMenu(row.id);
	                },
	                'click .RoleOfB': function (e, value, row, index) {
	                	qiao.bs.confirm("确定要删除此项吗？",function(){
		                	deleteMenu(row.id,row.menuBelong);
		                },function(){});
	                },
	            },
	            formatter: function (value, row, index) {
	            	return [
	        	        '<button type="button" class="RoleOfA btn btn-default  btn-sm" style="margin-right:15px;">编辑</button>',
	        	        '<button type="button" class="RoleOfB btn btn-default  btn-sm" style="margin-right:15px;">删除</button>',
	    	        ].join('');
	            }
        }],
        onExpandRow: function (index, row, $detail) {
        	if(row.childMenuNum=="0"){
        		childTableTwoInit(index, row, $detail);
        	}else{
        	}
        },
        onLoadSuccess: function(data){  //加载成功时执行
        	if(data.returnCode!=0){
        		qiao.bs.msg({msg:data.returnMessage,type:'danger'});
        	}
        }
    });
	
	//获取新增菜单的表单信息,并验证
	$("#addMenuForm").bootstrapValidator({
		fields : {
			addMenuName : {validators : {notEmpty : {message : '菜单名称不能为空.'},stringLength : {min : 2, max : 15,message : '菜单名称长度必须在2到15位之间'}}},
			addMenuIcon : {validators : {notEmpty : {message : '菜单图标不能为空.'},stringLenght : {min : 2, max : 30,message : '菜单图标长度必须在2到30位之间'}}},
			addMenuStyle : {validators : {notEmpty : {message : '菜单样式不能为空.'},stringLenght : {min : 2, max : 30,message : '菜单样式长度必须在2到30位之间'}}},
			addMenuTpl : {validators : {notEmpty : {message : '菜单TPL不能为空.'},stringLenght : {min : 2, max : 50,message : '菜单TPL长度必须在2到50位之间'}}},
			addMenuJs : {validators : {notEmpty : {message : '菜单JS不能为空.'},stringLenght : {min : 2, max : 50,message : '菜单JS长度必须在2到50位之间'}}},
			addMenuSort : {validators : {notEmpty : {message : '菜单序号不能为空.'},stringLenght : {min : 1, max : 3,message : '菜单序号长度必须在1到3位之间'}}},
			addMenuType : {validators : {notEmpty :{message : '菜单类型不能为空.'}}},
		},
		submitHandler : function(validator, form, submitButton){
			var params = null;
			if($("#addMenuType").val() == "1"){
				params = {
						menuName : $("#addMenuName").val(),
						menuIcon : $("#addMenuIcon").val(),
						menuStyle : $("#addMenuStyle").val(),
						menuTpl : $("#addMenuTpl").val(),
						menuJs : $("#addMenuJs").val(),
						menuSort : $("#addMenuSort").val(),
						menuType : $("#addMenuType").val(),
						parentId : ''
				};
			}else if($("#addMenuType").val() == "2"){
				if(isNull($("#addParentId").val())){
					qiao.bs.msg({msg : "请选择所属菜单类型.", type : 'danger'});
					return false;
				}else{
					params = {
							menuName : $("#addMenuName").val(),
							menuIcon : $("#addMenuIcon").val(),
							menuStyle : $("#addMenuStyle").val(),
							menuTpl : $("#addMenuTpl").val(),
							menuJs : $("#addMenuJs").val(),
							menuSort : $("#addMenuSort").val(),
							menuType : $("#addMenuType").val(),
							parentId : $("#addParentId").val()
					};
					console.log(params);
				}
			}else{
				qiao.bs.msg({msg : "参数错误.", type : 'danger'});
			}
			AjaxPostUtil.request({url : path+"0b6833288e6248deac52880861336c9b", params : params, type : 'json', callback : function(json){
				if(json.returnCode == 0){
					qiao.bs.msg({msg : "菜单添加成功.", type : 'success'});
					$("#addMenuModal").modal("hide");
					$('#messageTable').bootstrapTable('refresh',{url : path+'9c05169202a447c8befa10cea4d6b176'});
				}else{
					qiao.bs.msg({msg : json.returnMessage, type : 'danger'});
				}
			}});
		}
	});
	
	$("#updateMenuForm").bootstrapValidator({
		fields : {
			updateMenuName : {validators : {notEmpty : {message : '菜单名称不能为空.'},stringLength : {min : 2, max : 15,message : '菜单名称长度必须在2到15位之间'}}},
			updateMenuIcon : {validators : {notEmpty : {message : '菜单图标不能为空.'},stringLenght : {min : 2, max : 30,message : '菜单图标长度必须在2到30位之间'}}},
			updateMenuStyle : {validators : {notEmpty : {message : '菜单样式不能为空.'},stringLenght : {min : 2, max : 30,message : '菜单图标长度必须在2到30位之间'}}},
			updateMenuTpl : {validators : {notEmpty : {message : '菜单TPL不能为空.'},stringLenght : {min : 2, max : 50,message : '菜单TPL长度必须在2到50位之间'}}},
			updateMenuJs : {validators : {notEmpty : {message : '菜单JS不能为空.'},stringLenght : {min : 2, max : 50,message : '菜单JS长度必须在2到50位之间'}}},
			updateMenuSort : {validators : {notEmpty : {message : '菜单序号不能为空.'},stringLenght : {min : 1, max : 3,message : '菜单JS长度必须在1到3位之间'}}},
			updateMenuType : {validators : {notEmpty :{message : '菜单类型不能为空.'}}},
		},
		submitHandler : function(validator, form, submitButton){
			var params = null;
			if($("#updateMenuType").val() == "1"){
				params = {
						rowId : rowIdUpdate,
						menuName : $("#updateMenuName").val(),
						menuIcon : $("#updateMenuIcon").val(),
						menuStyle : $("#updateMenuStyle").val(),
						menuTpl : $("#updateMenuTpl").val(),
						menuJs : $("#updateMenuJs").val(),
						menuSort : $("#updateMenuSort").val(),
						menuType : $("#updateMenuType").val(),
						parentId : ''
				};
			}else if($("#updateMenuType").val() == "2"){
				if(isNull($("#updateParentId").val())){
					qiao.bs.msg({msg : "请选择所属菜单类型.", type : 'danger'});
					return false;
				}else{
					params = {
							rowId : rowIdUpdate,
							menuName : $("#updateMenuName").val(),
							menuIcon : $("#updateMenuIcon").val(),
							menuStyle : $("#updateMenuStyle").val(),
							menuTpl : $("#updateMenuTpl").val(),
							menuJs : $("#updateMenuJs").val(),
							menuSort : $("#updateMenuSort").val(),
							menuType : $("#updateMenuType").val(),
							parentId : $("#updateParentId").val()
					};
					console.log(params);
				}
			}else{
				qiao.bs.msg({msg : "参数错误.", type : 'danger'});
			}
			AjaxPostUtil.request({url : path+"ce5db98947d14fe69a05fce939a043cd", params : params, type : 'json', callback : function(json){
				if(json.returnCode == 0){
					qiao.bs.msg({msg : "菜单修改成功.", type : 'success'});
					$("#updateMenuModal").modal("hide");
					$('#messageTable').bootstrapTable('refresh',{url : path+'9c05169202a447c8befa10cea4d6b176'});
				}else{
					qiao.bs.msg({msg : "参数错误.", type : 'danger'});
				}
			}});
		}
	});
}

function eventInit(){
	//新增按钮时打开模态框,并获取一级菜单
	$('body').on('click', '#addMenu', function(e){
		AjaxPostUtil.request({url : path+"1bfeb662bc334c70b8a8c3ff13e2ecba", params : {}, type : 'json', callback : function(json){
			if(json.returnCode == 0){
				var source = $("#selectOneMenu").html();
				var template = Handlebars.compile(source);
				$("#addParentId").html(template(json));
				$("input").val("");
				$("#addParentIdDiv").addClass("hide");
				$("#addMenuType").val("1");
				$("#addMenuModal").modal("show");
			}else{
				qiao.bs.msg({msg : json.returnMessage, type : 'danger'});
			}
		}});
	});
	
	//选中二级菜单时出现一级菜单的选择框
	$('body').on('change','#addMenuType', function(e){
		var selectType = $(this).val();
		if(selectType == "1"){
			$("#addParentIdDiv").addClass("hide");
		}else if(selectType == "2"){
			$("#addParentIdDiv").removeClass("hide");
		}else{
			qiao.bs.msg({msg : "参数错误.", type : 'danger'});
		}
	});
	
	//刷新表单
	$('body').on('click', '#refreshDiv', function(e){
		$('#messageTable').bootstrapTable('refresh',{url : path+'9c05169202a447c8befa10cea4d6b176'});
		qiao.bs.msg({msg : "刷新成功.", type : 'success'});
	});
}

function childTableTwoInit(index, row, $detail){
	var parentId = row.id;
	var cur_table = $detail.html('<table></table>').find('table');
	$(cur_table).bootstrapTable({
        url: path+'48c5039a57c94ca894a11f20dd54bc4e', method: 'post', striped: false, cache: false, pagination: false,
        contentType: "application/x-www-form-urlencoded", sidePagination: "server", pageSize: 10, uniqueId: "id", detailView: false,
        queryParams: {parentId:parentId},
        columns:[{field: 'menuName', title: '菜单名称', align: 'center', width: '200', formatter: function (value, row, index) {
		        	return '<a style="word-wrap:break-word;">'+value+'</a>';
		        }},
		        {field: 'menuType', title: '类型', align: 'center', width: '200', formatter: function (value, row, index) {
		        	return '<a style="word-wrap:break-word;">'+value+'</a>';
		        }},
		        {field: 'menuTpl', title: 'TPL', align: 'center', width: '200', formatter: function (value, row, index) {
		        	return '<a style="word-wrap:break-word;">'+value+'</a>';
		        }},
		        {field: 'menuJs', title: 'JS', align: 'center', width: '200', formatter: function (value, row, index) {
		        	return '<a style="word-wrap:break-word;">'+value+'</a>';
		        }},
		        {field: 'menuIcon', title: 'ICON', align: 'center', width: '200', formatter: function (value, row, index) {
		        	return '<a style="word-wrap:break-word;">'+value+'</a>';
		        }},
		        {field: 'menuStyle', title: 'STYLE', align: 'center', width: '200', formatter: function (value, row, index) {
		        	return '<a style="word-wrap:break-word;">'+value+'</a>';
		        }},
		        {field: 'menuSort', title: '菜单序号', align: 'center', width: '200', formatter: function (value, row, index) {
		        	return '<a style="word-wrap:break-word;">'+value+'</a>';
		        }},
	            {field: 'operate', title: '操作', align: 'center', width: '210', events: {
	                'click .RoleOfA': function (e, value, row, index) {
	                	if(row.type=="2"){
	                		editMenu(row.id);
	                	}else{
	                		qiao.bs.msg({msg:"菜单参数错误",type:'danger'});
	                	}
	                },
	                'click .RoleOfB': function (e, value, row, index) {
	                	qiao.bs.confirm("确定要删除此项吗？",function(){
		                	deleteMenu(row.id,row.menuBelong);
		                },function(){});
	                },
	            },
	            formatter: function (value, row, index) {
	            	return [
	        	        '<button type="button" class="RoleOfA btn btn-default  btn-sm" style="margin-right:15px;">编辑</button>',
	        	        '<button type="button" class="RoleOfB btn btn-default  btn-sm" style="margin-right:15px;">删除</button>',
	    	        ].join('');
	            }
        }],
        onLoadSuccess: function(data){  //加载成功时执行
        	if(data.returnCode!=0){
        		qiao.bs.msg({msg:data.returnMessage,type:'danger'});
        	}
        }
    });
}

function editMenu(rowId){
	AjaxPostUtil.request({url : path+"1bfeb662bc334c70b8a8c3ff13e2ecba", params : {rowId : rowId},type : 'json', callback : function(json){
		if(json.returnCode == 0){
			var source = $("#selectOneMenu").html();
			var template = Handlebars.compile(source);
			$("#updateParentId").html(template(json));
			AjaxPostUtil.request({url : path+"68573b3d131744a8975d3bfef5866d27", params : {rowId : rowId}, type : 'json', callback : function(jsonMation){
				console.log(jsonMation);
				if(jsonMation.returnCode == 0){
					rowIdUpdate = jsonMation.bean.id;
					$("#updateMenuName").val(jsonMation.bean.menuName);
					$("#updateMenuIcon").val(jsonMation.bean.menuIcon);
					$("#updateMenuStyle").val(jsonMation.bean.menuStyle);
					$("#updateMenuTpl").val(jsonMation.bean.menuTpl);
					$("#updateMenuJs").val(jsonMation.bean.menuJs);
					$("#updateMenuSort").val(jsonMation.bean.menuSort);
					$("#updateMenuType").val(jsonMation.bean.menuType);
					if(jsonMation.bean.menuType == "1"){
						$("#updateParentIdDiv").addClass("hide");
					}else if(jsonMation.bean.menuType == "2"){
						$("#updateParentIdDiv").removeClass("hide");
					}else{
						qiao.bs.msg({msg : "参数错误.", type : 'danger'});
					}
					$("#updateParentId").val(jsonMation.bean.parentId);
					$("#updateMenuModal").modal("show");
				}else{
					qiao.bs.msg({msg:jsonMation.returnMessage,type:'danger'});
				}
			}});
		}else{
			qiao.bs.msg({msg : json.returnMessage, type : 'danger'});
		}
	}});
}

function deleteMenu(rowId,parentId){
	AjaxPostUtil.request({url : path+"f26a4810b4204d9dbc2be8280bae70fe", params : {rowId : rowId, parentId : parentId}, type : 'json', callback : function(jsonMation){
		if(jsonMation.returnCode == 0){
			qiao.bs.msg({msg : "删除成功.", type : 'success'});
			$('#messageTable').bootstrapTable('refresh',{url : path+'9c05169202a447c8befa10cea4d6b176'});
		}else{
			qiao.bs.msg({msg : "参数错误.", type : 'danger'});
		}
	}});
}